package com.tom.demo.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 *“空”的定义不仅包括 null，
 * 还包括空字符串（""）、
 * 空集合（如 List、Set 等没有元素的情况）、
 * 空映射（如 Map 没有键值对的情况）
 * 以及可能其他自定义类型的“空”状态。
 * 以上情况都不会参与序列化
 * @JsonInclude(JsonInclude.Include.NON_EMPTY)
 * 路由配置信息
 */
@Data
@ApiModel(value = "路由菜单相关信息")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class RouterVo implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 路由名字
     */
    @ApiModelProperty(value = "路由名字")
    private String name;
    /**
     * 路由地址
     */
    @ApiModelProperty(value = "路由地址")
    private String path;


    /**
     * 是否隐藏路由，当设置 true 的时候该路由不会再侧边栏出现
     */
    @ApiModelProperty(value = "是否隐藏路由，当设置 true 的时候该路由不会再侧边栏出现")
    private boolean hidden;

    /**
     * 组件地址
     */
    @ApiModelProperty(value = "组件地址")
    private String component;

    /**
     * 当你一个路由下面的 children 声明的路由大于1个时，自动会变成嵌套的模式--如组件页面
     */
    @ApiModelProperty(value = "当你一个路由下面的 children 声明的路由大于1个时，自动会变成嵌套的模式--如组件页面")
    private Boolean alwaysShow;

    /**
     * 其他元素
     */
    @ApiModelProperty(value = "其他元素")
    private MetaVo meta;

    /**
     * 子路由
     */
    @ApiModelProperty(value = "子路由")
    private List<RouterVo> children;


}